package com.servicio.common.UI;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.List;
import java.util.Vector;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;

import org.hibernate.Query;
import org.hibernate.Session;

import com.servicio.common.beans.MedicalEntity;
import com.servicio.common.data.HibernateUtil;

public class TableRender extends JPanel {

	private boolean DEBUG = false;
	//private MyTableModel tableModel = new MyTableModel();
	private DefaultTableModel model = new DefaultTableModel () {
        @Override
        // al poner que devuelva un boolean lo que hace es poner un check automatico el jtable, tu deberias seguir con un || columnIndex == 4.... en el if
        public Class getColumnClass(int columnIndex) {
            if (columnIndex == 4) {
                return Boolean.class;
            } else {
                return super.getColumnClass(columnIndex);
            }
        }
    };
	
	private JTable table = new JTable();
	private Vector<String> header = new Vector<String>();

	public TableRender() {

		super(new GridLayout(1, 0));

		header.add("Codigo");
		header.add("Descripcion");
		header.add("Domicilio");
		header.add("Telefono");
		header.add("otro");
		
		model.setColumnIdentifiers(header);
		table.setModel(model);
		
        Session session = HibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        Query q = session.getNamedQuery("AllMedicalEntities");
        List resultList = q.list();
      
		
		//Vector<Vector> results = new Vector<Vector>();
		for (Object obj : resultList) {
			Vector<Object> row = new Vector<Object>();
			row.add(((MedicalEntity) obj).geteCodigo().toString());
			row.add(((MedicalEntity) obj).geteDescrip().toString());
			row.add(((MedicalEntity) obj).getsDomicilio().toString());
			row.add(((MedicalEntity) obj).geteTelefono().toString());
			row.add(new Boolean(false));
			
			
			
			/*tipoHeader row = new tipoHeader(((MedicalEntity) obj).geteCodigo().toString(),
					((MedicalEntity) obj).geteDescrip().toString(),
					((MedicalEntity) obj).getsDomicilio().toString(),
					((MedicalEntity) obj).geteTelefono().toString(),
					new String("empty"));*/
			//System.out.println(row);
			model.addRow(row);
		}
		//model.addRow(results);
		//model = new DefaultTableModel(results,header);
		
		//table = new JTable(tableModel);
		/*table = new JTable(results,header);*/
		table.setPreferredScrollableViewportSize(new Dimension(500, 70));
		table.setFillsViewportHeight(true);

		// Create the scroll pane and add the table to it.
		JScrollPane scrollPane = new JScrollPane(table);

		// Set up column sizes.
		//initColumnSizes(table);

		// Fiddle with the Sport column's cell editors/renderers.
		// setUpSportColumn(table, table.getColumnModel().getColumn(2));

		// Add the scroll pane to this panel.
		add(scrollPane);
	}
	
	public int getRowCount(){
		return table.getRowCount();
	}
	
	public int getColumnCount(){
		return table.getColumnCount();
	}
	
	public Object getValueAt(int row, int col){
		return table.getValueAt(row, col);
	}
	
	//private TableCellRenderer cellRenderer;
	
	public void setCellColor(int row, int col){
		DefaultTableCellRenderer d;
		d = (DefaultTableCellRenderer)table.getCellRenderer(row,col);
		d.setBackground(Color.GREEN);
	}
	

	/*
	 * This method picks good column sizes. If all column heads are wider than
	 * the column's cells' contents, then you can just use
	 * column.sizeWidthToFit().
	 */

	private JTable getTable() {
		return table;
	}


	public class tipoHeader {

		private String codigo;
		private String descripcion;
		private String domicilio;
		private String telefono;
		private String empty;

		public tipoHeader(String codigo, String descripcion, String domicilio,
				String telefono, String empty) {
			this.codigo = codigo;
			this.descripcion = descripcion;
			this.domicilio = domicilio;
			this.telefono = telefono;
			this.empty = empty;
		}

		public String getCodigo() {
			return codigo;
		}

		public void setCodigo(String codigo) {
			this.codigo = codigo;
		}

		public String getDescripcion() {
			return descripcion;
		}

		public void setDescripcion(String descripcion) {
			this.descripcion = descripcion;
		}

		public String getDomicilio() {
			return domicilio;
		}

		public void setDomicilio(String domicilio) {
			this.domicilio = domicilio;
		}

		public String getTelefono() {
			return telefono;
		}

		public void setTelefono(String telefono) {
			this.telefono = telefono;
		}

	}


	public void setPreferredScrollableViewportSize(Dimension dimension) {
		// TODO Auto-generated method stub
		table.setPreferredScrollableViewportSize(dimension);
	}

}

